﻿using System;
using System.Collections.Generic;
using AccesoData;
using Entidades;
using Logica.Interfaces;

namespace Logica.Comandos.AseguradoraCommand
{
    public class ComandoBuscarAseguradora: Comando,IConsultableLista
    {
        #region Overrides of Comando

        public override void Ejecutar()
        {
            throw new NotImplementedException();
        }

        #endregion
        
        public List<object> Ejecutar(Object busqueda)
        {
            
            Aseguradora miAseguradora = FabricaEntidades.ObtenerAseguradora();
            if(((String)busqueda).Length>2)
            {
                if (((String)busqueda)[1] == '-')
                {
                    char[] separador = { '-' };
                    string[] split = ((String)busqueda).Split(separador);
                    miAseguradora.LetraRif = Convert.ToChar(split[0].ToLower());
                    miAseguradora.Rif = Convert.ToInt64(split[1]);
                }
            }
            int numero;
            try
            {
                numero = Convert.ToInt32(busqueda);
            }
            catch (Exception)
            {

                numero = -1;
            }

            List<object> retorno = new List<object>();
            foreach (var aseguradora in 
                DAO.ObtenerFabrica(1).ObtenerDaoAseguradora().ObtenerAseguradoraRif(miAseguradora))
            {
                retorno.Add(aseguradora);
            }

            foreach (var aseguradora in 
                DAO.ObtenerFabrica(1).ObtenerDaoAseguradora().ObtenerAseguradoraRifNumero(numero))
            {
                retorno.Add(aseguradora);
            }

            foreach (var aseguradora in
                DAO.ObtenerFabrica(1).ObtenerDaoAseguradora().ObtenerAseguradorasNombre(((String)busqueda)))
            {
                retorno.Add(aseguradora);
            }
            return retorno;
        }
    }
}
